package com.zjy.software.day18;

public class LambdaDemo {
    public static void main(String[] args) {
        // 匿名类实现一个接口里面的方法,只调用了一次的情况下,多用匿名类
        Eat eat=new Eat(){
            @Override
            public void eat(String name, int sum) {
                System.out.println("我是eat的匿名类实现一个接口里面的方法,只调用了一次的情况下,多用匿名类");
            }
        };
        eat.eat("name", 10);

        //下面是lambda表达式的同样功能的写法
        Eat lambdaEat=(name, sum)->System.out.println("我是lambda表达式实现一个接口里面的方法");
        lambdaEat.eat("name", 10);

        //一个参数,有返回值的lambda表达式
        Run run=(init, name)->{ return init*2;};

        //精简一个参数,只有一行代码直接返回的lambda表达式,这个时候代码块的大括号{}和return都可以省略
        Run run2=(init, name)->  init*2;
        int speed = run2.run(10, "");
        System.out.println("speed = " + speed);


    }
}
@FunctionalInterface
interface  Eat{
    void eat(String name, int sum);
    default void eat2() {};
}

@FunctionalInterface
interface  Run{
    int run(int init, String name);
}